package com.jml.蚂蚁.netty.对象序列化server;


import com.jml.蚂蚁.netty.对象序列化client.MsgEntity;
import io.netty.buffer.Unpooled;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.SimpleChannelInboundHandler;
import io.netty.util.CharsetUtil;

/**
 * @author:jml
 * @date: 2019/12/24 10:37
 * @description：
 */
//这里定义泛型为MsgEntity类型，那么接收的数据就都是MsgEntity类型
public class ServerHandler  extends SimpleChannelInboundHandler {
	
	/*netty底层是通过NIO通信的，默认是bytebuf通信，
	 *如果想直接用对象传递就需要使用Netty的编码和解码不能直接使用对象
	 * 可以把对象转对json字符串，通过字符串进行传递
	 *服务端和客户端都需要进行发送和接收数据，所有都需要加码和解码
	 * 需要加入ch.pipeline().addLast(new StringEncoder());
	 * ch.pipeline().addLast(new StringDecoder());
	 */
	
	/**
	 * @Description:服务端接收数据+服务端响应客户端
	 * @param ctx: 服务端响应客户端
	 * @param msg: 服务端接收的数据
	 * @return:void
	 */
	@Override
	protected void channelRead0(ChannelHandlerContext ctx, Object msg) throws Exception {
		//通过反射转化为类型
		System.out.println("request:" + msg);
		ctx.writeAndFlush(new MsgEntity("111","2222"));
	}
}
